Skip to content

fix(companion): keep live transcript tail visible - #74

Merged
zts212653 merged 4 commits into
mainfrom
fix/f317-live-tail
Oct 5, 2026
Merged

zts212653 merged 4 commits into
mainfrom
fix/f317-live-tail

Conversation

@zts212653

@zts212653 zts212653 commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Keep the speaker/source label fixed while long call-bar text overflows from the side opposite its newest streamed suffix, so the newest visible glyph stays visible for LTR, RTL, and mixed-direction streams.
  • Resolve the compact projection from the last strong character, while preserving the browser's bidi handling for the displayed text.
  • Add real Chromium narrow-surface regressions for simultaneous user and assistant rows, both direction changes, a 60-step mixed stream, and supplementary-plane Adlam, including glyph hit-testing rather than text-only assertions.
  • Pin the exact @clowder-ai/companion@0.1.0-alpha.20 candidate in the public catalog.

Original problem

In the real F317 call bar, both long live rows ended in a right-side ellipsis, so the words that had just streamed in were present in data but not visible. The accepted B boundary also requires the source/name labels, transcript return path, and call/microphone/share state to remain intact.

Source: thread_mu2fdr0521qiinkm#0001791162625965-000203-369096da

Evidence

  • RED on 943c230: the user tail range was at x=1401..1497 while its row ended at x=359 in a 390px Chromium viewport.
  • Sonnet's review probe exposed the mixed-script boundary on ebcbe3b: 9/60 streamed LTR→Arabic steps hid the latest suffix.
  • GREEN on aac65166aa7911d61573d31876dc43c0cc99e84b: Chinese, Latin, Arabic, Hebrew, and both mixed-direction suffixes are hit-testable inside their rows; the same 60-step stream reports 0/60 hidden tails.
  • Independent local review approved aac65166aa7911d61573d31876dc43c0cc99e84b with no open P1/P2. Final HEAD 6349fa51d908381b53d1ed8fc6b794d45b3ac30d adds only the reviewer-requested Adlam browser guard: replacing Array.from with UTF-16 split('') makes the new assertion RED, while restoring code-point reversal makes it GREEN.
  • Continuity proof: aac65166..6349fa5 changes only packages/companion/test/panel-layout.browser.mjs; exact repack remains byte-identical to the reviewed artifact.
  • node@24.18.0 --test packages/companion/test/*.test.mjs — 153/153 pass.
  • node@24.18.0 --test packages/companion/test/panel-layout.browser.mjs — 7/7 pass.
  • node@24.18.0 packages/companion/scripts/check.mjs — pass.
  • Exact-toolchain catalog validation and exact repack — pass.
  • Narrow real-layout capture: /tmp/cat-cafe-evidence/f317-live-tail/author-p4-green/shot-callbar-w390.png.

Artifact

  • Source: 6349fa51d908381b53d1ed8fc6b794d45b3ac30d
  • Package: @clowder-ai/companion@0.1.0-alpha.20
  • SRI: sha512-R7KbX0EZAvE3Ll4S7d9lSrk5zIkBe8jnIHpdh82lE7v+mqoXtkDUifbXCYuEdMoDcEgkq/r49M9VBHnx9vtk6A==
  • SHA-1: ac97cb246ab15f64ecb8404a73eeb3e58b59fc3d
  • Tarball SHA-256: 44c91e79d88b2b1b074f27b1310ec52715142adb0cd0b8f2fcfea3db9954ab4c
  • Packed size: 12,510,786 bytes; unpacked size: 12,707,292 bytes; 61 files.

Deliberate compact-view trade-offs

  • Last-strong direction prioritizes the newest visible glyph. When a short suffix switches writing direction from a long preceding passage, some immediately preceding context can be ellipsized or visually reordered; the durable transcript remains the full-reading surface.
  • A trailing LRM/RLM can itself select the direction and hide the preceding word. No evidence currently shows Host transcription emitting those controls, so this PR does not normalize transcript text.

No runtime, call, microphone, speaker, or screen-share action was started or stopped for this fix.

Why: The call bar retained the newest text in data but ellipsized its right edge, hiding the words that had just streamed in. Separate the stable speaker label from a tail-oriented overflow region, prove both roles in a narrow Chromium surface, and pin the exact alpha.20 artifact without changing call or media behavior.

[小太阳·砚砚/gpt-5.6-sol🐾]

Thread-Context: threadId=thread_muj2oyola5htyhrm catId=codex-sol
@zts212653
zts212653 requested a review from mindfn as a code owner October 5, 2026 01:38
Why: Tail-oriented overflow fixed the reported Chinese and Latin call-bar clipping but reversed the logical tail for right-to-left text. Use the browser's native bidi direction, preserve the correct overflow edge for both directions, and strengthen the real-layout regression so punctuation, short alignment, ellipsis, and RTL tails cannot silently regress.

[小太阳·砚砚/gpt-5.6-sol🐾]

Thread-Context: threadId=thread_muj2oyola5htyhrm catId=codex-sol
Why: A compact live transcript can change writing direction as new chunks arrive, so first-strong direction can still hide the newest suffix. Resolve and display against the last strong character, then cover both direction changes and a 60-step mixed stream in Chromium.

[小太阳·砚砚/gpt-5.6-sol🐾]

Thread-Context: threadId=thread_muj2oyola5htyhrm catId=codex-sol
Why: The renderer intentionally reverses Unicode code points when resolving the latest strong direction. Guard an Adlam tail so a future code-unit reversal cannot silently corrupt supplementary-plane RTL text while ordinary Arabic and Hebrew tests remain green.

[小太阳·砚砚/gpt-5.6-sol🐾]

Thread-Context: threadId=thread_muj2oyola5htyhrm catId=codex-sol
@zts212653

Copy link
Copy Markdown
Owner Author

Local review provenance — APPROVE

  • Reviewer: 宪宪 / Sonnet 5.5 (catId sonnet; distinct from author codex-sol)
  • Review subject: pr:zts212653/clowder-ai-plugins#74
  • Reviewed runtime HEAD: aac65166aa7911d61573d31876dc43c0cc99e84b
  • Accepted source: thread_mu2fdr0521qiinkm#0001791162625965-000203-369096da (immutable message revision unchanged)
  • Durable verdict: approved, no open P1/P2
  • Verdict evidence: Cat Café message thread_muj2oyola5htyhrm#0001791186604418-001277-e620056d

Final PR HEAD is 6349fa51d908381b53d1ed8fc6b794d45b3ac30d. The only post-review delta is a 14-line Adlam browser regression in packages/companion/test/panel-layout.browser.mjs, added from the reviewer's P3 test-gap finding.

Continuity proof:

  • Production source, package metadata, CSS, and catalog are byte-identical to the reviewed HEAD.
  • Replacing Array.from with UTF-16 split('') makes the new Adlam assertion fail; restoring code-point reversal passes.
  • Exact alpha.20 repack is unchanged: SRI sha512-R7KbX0EZAvE3Ll4S7d9lSrk5zIkBe8jnIHpdh82lE7v+mqoXtkDUifbXCYuEdMoDcEgkq/r49M9VBHnx9vtk6A==, tar SHA-256 44c91e79d88b2b1b074f27b1310ec52715142adb0cd0b8f2fcfea3db9954ab4c.
  • Final-tree unit 153/153, Chromium 7/7, component check, exact catalog check, and required GitHub CI all pass.

This comment is an author-side mechanical transcription of the independent typed verdict and continuity evidence; it is not a self-review.

@zts212653
zts212653 merged commit 8ee84f6 into main Oct 5, 2026
2 checks passed
@zts212653
zts212653 deleted the fix/f317-live-tail branch October 5, 2026 08:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant